package com.scpii.api.service.user;

import java.util.List;

import com.scpii.api.common.aop.ActionTypeAspect.PointConfig;
import com.scpii.api.domain.user.UserActions;
import com.scpii.api.domain.user.UserShare;

public interface UserActionsService {

	public List<UserActions> selectBySelective(UserActions userActions);

	public void insertSelective(UserActions record);

	public void deleteByPrimaryKey(Long id);

	public List<UserActions> selectBySelectiveWithSingle(UserActions record);

	public List<UserActions> selectByTargetAndActionTypes(Long targetId,
			String[] actionTypes);

	public List<UserActions> selectUserStatusByTargetAndActionTypes(Long id,
			Long targetId, String[] types);

	public void deleteByWithInTypes(UserActions record, String[] actionTypes);

	/**
	 * @param table
	 * @param id
	 * @param column
	 * @param count
	 */
	public void updateTableCountByColoumAndId(String table, Long id,
			String column, Integer count);

	/**
	 * @param record
	 * @param count
	 */
	public void updateCountByUserAction(UserActions record, int count);

	/**
	 * @param userAction
	 * @param pointConfig
	 * 
	 */
	public void insertSelective(UserActions record, PointConfig config);

	/**
	 * @param userAction
	 * @param pointConfig
	 * @param userShare
	 */
	public void insertSelective(UserActions record, PointConfig pointConfig,
			UserShare userShare);

	/**
	 * @param id
	 * @param actionType
	 * @return
	 */
	public List<UserActions> selectByUserIdAndActionType(Long userId,
			String[] actionTypes);

}
